//
//  HZHttpRequestHandler.h
//  Expert
//
//  Created by 刘华舟 on 15/4/3.
//  Copyright (c) 2015年 BLUEBLACK. All rights reserved.
//

#import <Foundation/Foundation.h>

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "NSDictionary+SafetyGet.h"
#import "HZHttpFileData.h"

#define HZHttpRequestTimeoutInterval 20.0 // 请求超时时间
#define HZHttpRequestPageSize 20 // 每页请求的数据大小

//#define SLHttpRequestAddressHeader @"http://58.30.240.216:8080"
#define HZHttpRequestAddressHeader @"http://mh.kangxihui.com/"

typedef NS_ENUM(NSUInteger, HZHttpRequestHandlerResponseCode){
    HZHttpRequestHandlerResponseCodeSuccess = 1000, // 请求成功
    HZHttpRequestHandlerResponseCodeSessionInvalid = 10000 // session过期
};


@interface HZHttpRequestHandler : NSObject

/**
*  GET方式请求数据
*
*  @param url                  请求URL
*  @param parameters           请求参数
*  @param showProgressInView   显示网络加载提示框的view，为nil时显示在window上
*  @param isHideProgress       是否隐藏数据加载提示框
*  @param success              请求成功的回调
*  @param failure              请求失败的回调
*/
+ (void)GETWithURL:(NSString *)url parameters:(NSDictionary *)parameters showProgressInView:(UIView *)view isHideProgress:(BOOL)isHideProgress success:(void (^)(NSDictionary *dataDictionary))success failure:(void (^)(NSError *error))failure;

/**
 *  PUT方式请求数据
 *
 *  @param url                  请求URL
 *  @param parameters           请求参数
 *  @param showProgressInView   显示网络加载提示框的view，为nil时显示在window上
 *  @param isHideProgress       是否隐藏数据加载提示框
 *  @param success              请求成功的回调
 *  @param failure              请求失败的回调
 */
+ (void)PUTWithURL:(NSString *)url parameters:(NSDictionary *)parameters showProgressInView:(UIView *)view isHideProgress:(BOOL)isHideProgress success:(void (^)(NSDictionary *dataDictionary))success failure:(void (^)(NSError *error))failure;

/**
 *  POST方式请求数据
 *
 *  @param url                  请求URL
 *  @param parameters           请求参数
 *  @param showProgressInView   显示网络加载提示框的view，为nil时显示在window上
 *  @param isHideProgress       是否隐藏数据加载提示框
 *  @param success              请求成功的回调
 *  @param failure              请求失败的回调
 */
+ (void)POSTWithURL:(NSString *)url parameters:(NSDictionary *)parameters showProgressInView:(UIView *)view isHideProgress:(BOOL)isHideProgress success:(void (^)(NSDictionary *dataDictionary))success failure:(void (^)(NSError *error))failure;

/**
 *  POST方式请求数据
 *
 *  @param url                  请求URL
 *  @param parameters           请求的基本参数
 *  @param datas                文件数据，为SLHttpFileData类型的数组，如果数组中的元素类型错误，则抛出异常
 *  @param showProgressInView   显示网络加载提示框的view，为nil时显示在window上
 *  @param isHideProgress       是否隐藏数据加载提示框
 *  @param success              请求成功的回调
 *  @param failure              请求失败的回调
 */
+ (void)POSTWithURL:(NSString *)url parameters:(NSDictionary *)parameters datas:(NSArray *)datas showProgressInView:(UIView *)view isHideProgress:(BOOL)isHideProgress success:(void (^)(NSDictionary *dataDictionary))success failure:(void (^)(NSError *error))failure;

/**
 *  取消所有请求
 *
 */
+ (void)cancelAllRequest;

@end
